/*
 * @Description:自定义的文件操作函数
 * @Date: 2024-11-28 16:52:52
 * @FilePath: \demod:\12electron\electron-demo\src\main\file.ts
 */

import { ipcMain } from 'electron';

import * as fs from 'fs';
import * as path from 'path';

const getFileList = async (dirPath) => {
  // 将当前脚本文件所在的目录路径与你指定的子目录名称连接起来，形成一个完整的路径。
  const directoryPath = path.join(__dirname, dirPath);
  return new Promise((resolve, reject) => {
    // 读取指定目录下的所有文件和文件夹的名称。
    fs.readdir(directoryPath, (err, files) => {
      if (err) {
        return reject(err);
      }
      const fileList = files.map((file) => {
        const filePath = path.join(directoryPath, file); // 将目录路径和文件名拼接成完整的文件路径
        const stats = fs.statSync(filePath); // 获取文件或文件夹的详细信息（如大小、创建时间、修改时间等）
        return {
          name: file,
          path: filePath,
          size: stats.size,
          isDirectory: stats.isDirectory(),
          createdAt: stats.birthtime,
          modifiedAt: stats.mtime,
        };
      });
      resolve(fileList);
    });
  });
};

// 读取指定文件目录下的所有文件
ipcMain.handle('file:getFileList', async (_event, directoryPath) => {
  try {
    const files = await getFileList(directoryPath);
    return files;
  } catch (error) {
    console.error('读取文件目录出错:', error);
    throw error;
  }
});

// 读取文件内容
ipcMain.handle('file:readFile', async (_event, filePath) => {
  try {
    const data = await fs.promises.readFile(filePath, 'utf8');
    return data;
  } catch (error) {
    console.error('读取文件时出错:', error);
    return null;
  }
});
